package myclass

import scala.collection.mutable.ArrayBuffer

/**
  * Student
  *
  * @author zhangyimin
  * @date 2018-09-14 上午10:52
  * @version 1.0
  */
class Student {

  private var id: Int = 0

  private var name: String = ""

  //只能get不能set
  private val money: Long = 9000

  //类的私有属性,其他类无法访问
  private[this] var age: Int = 18


  //get set方法
  def getId(): Int = this.id

  def setId(newId: Int) = this.id = newId


  def getName(): String = this.name

  def setName(newName: String) = this.name = newName


  //定义一个变长泛型集合
  private var courceList = new ArrayBuffer[CourseGrade]()

  //定义一个函数用于添加学生的考试成绩
  def addNewCourseGrade(name: String, score: Int) = {
    var c = new CourseGrade(name, score)
    courceList += c
  }


  //  内部类

  class CourseGrade(val coursename: String, val grade: Int) {
//    定义其他属性
  }

}

/**
  * main方法,是静态的
  * 如果object的名字跟类的名字一样,这时就把这个object对象叫做该类的伴生对象
  */
object Student {

  def main(args: Array[String]): Unit = {
    var s1 = new Student
    s1.setId(123)
    s1.setName("张三")
    println(s1.getId())
    println(s1.getName())
    //这里调用的是get和set方法
    s1.id = 3
    s1.name = "tom"
    println(s1.id)
    println(s1.name)
    println(s1.money)
    //    这里无法访问 因为该属性,只有类才能访问private[this]
    //    println(s1.age)
    //获得这个泛型集合,并打印出对象
    s1.addNewCourseGrade("mike1",200)
    s1.addNewCourseGrade("mike2",200)
    s1.addNewCourseGrade("mike3",200)
    s1.addNewCourseGrade("mike4",200)
    s1.courceList.foreach(println)
    for (s<-s1.courceList)println(s.coursename+"********"+s.grade)
  }


}


